Convolutions are used in image processing to perform low pass filtering (blurring), high pass filtering (sharpening), edge detection, edge enhancement and other functions. Convolution is a weighted sum of pixels in the neighborhood of a source pixel. The weights are determined by a matrix of coefficients called a convolution kernel, which is usually square. The dimensions of the matrix are usually odd, so that the center of the matrix corresponds to the location of the output pixel. A sliding window, called a convolution window, is centered in sequence on each pixel in a source image. An output pixel value is computed by multiplying each pixel value in the convolution window by the corresponding coefficient in the convolution kernel and summing the products. This process is repeated for each pixel in the source image or in a selected region of the source image.
A 3.times.3 convolution kernel has nine coefficients arranged in a 3.times.3 matrix. To perform a 3.times.3 convolution operation on a pixel of a source image, nine different floating point convolution kernel values are multiplied by nine different pixel values of the source image, and the products are summed together. Thus, nine floating point multiplications and eight floating point additions are required for each source pixel. Since image sizes typically range from 256.times.256 to 4096.times.4096, this sequence of operations is performed many times (256.times.256=65, 536; 4096.times.4096=16, 777, 216) each time the image is drawn. Convolutions with larger convolution kernels, such 5.times.5, 7.times.7, etc., require even more calculations. Thus, the processing time required to perform image convolution can be relatively long. A reduction in processing time would be highly beneficial.